1. Field
The present invention relates generally to graphical user interfaces and, more specifically, to generating transparent graphics displays.
2. Description
In the days of xe2x80x9cdumbxe2x80x9d terminals and early personal computers (PCs), a user could typically view only one set of information at a time on a computer display. With the advent of windowing features of graphical user interfaces in some operating system software, a user may view multiple sets of information in multiple windows shown on the display. In some cases, the windows are overlapping, and in other cases the windows are non-overlapping (or tiled). While the windowing capability has proven advantageous for increasing the amount of information displayed to the user on a single display, it still is limited in that when two or more windows are overlapping, the window in the foreground obscures or blocks the user""s view of the overlapped portion of the window in the background. The foreground window also blocks input access to the overlapped portion of the background window. The user typically must perform some action, such as a cursor movement, keyboard input strike or mouse input event, to cause the background window to be changed to the foreground window, thereby allowing the user to fully view its contents or provide input signals to the system.
One approach to overcoming this drawback of windowing systems is to provide the capability for simultaneous viewing of the entire contents of multiple overlapping windows through the use of transparency. Transparent windows contain display data wherein objects or images beyond the transparent window (e.g., in a background window or underlying display surface) may still be perceived by the user. Transparent effects are used in some computer software games to enable features such as xe2x80x9cheads-upxe2x80x9d display functions.
Current implementations of transparency have at least several disadvantages. The transparent effect is typically achieved by interleaving pixels from two display buffers without the ability to adjust the level of transparency. The use of transparency results in windows with inferior viewing quality because the pixel interleaving method produces xe2x80x9ccheckerboardxe2x80x9d artifacts in the display. Furthermore, the transparent effects are limited to pre-defined, self-contained components of specialized application programs. That is, if a user desires that at least a portion of an application program""s output data be displayed in a transparent manner, the application program""s code may need to be re-written to explicitly implement the transparency. As a result, it may be difficult to provide transparency for application programs that do not already provide transparency capabilities themselves. When the application programs are commercial xe2x80x9coff-the-shelfxe2x80x9d shrink-wrapped software, providing transparency capabilities may not be feasible.
Therefore, a need exists for the capability to represent display objects of an application program transparently over the top of other display windows and background surfaces on a display without employing modifications to the application program.
An embodiment of the present invention is a method of creating transparent graphics for an application program lacking native transparency support. The method includes selecting a virtual display to receive display data output from the application program, displaying non-transparent display data on a primary display, drawing the display data on the virtual display, and representing the display data from the virtual display transparently on the primary display along with the non-transparent display data.
Another embodiment of the present invention is a system for creating transparent graphics for an application program lacking native transparency support. The system includes a virtual display driver to receive display data from the application program to be displayed transparently, a primary display to display non-transparent data and the display data, and a primary display driver to control the transparent display of the display data received from the virtual display driver and the display of the non-transparent data on the primary display.